
--=============================================================================--
-- 总是要成长的……

-- 一段时间后，我终于写出了一个真正可玩的游戏：板砖记
-- 演示视频： https://www.bilibili.com/video/BV1G4411a77F/?spm_id_from=333.999.0.0
-- 不过代码依旧很狂野
--=============================================================================--


--=============================================================================--
-- ■ 加载运行库
--=============================================================================--
require "Lib/engine"
require "Sys/扩展_精灵文字"

--===============================================================================
-- ■ 初始化屏幕
--===============================================================================
引擎  = D2D_引擎.创建("板砖记--*****",50,800,600,true,true,"Dat/图标.ico")
----------调试信息
a=0
b=0
------------
失败文字=D2D_文字.创建 ("黑体", 30,false,false, true)
失败文字:置颜色(颜色_黄)

文字 = D2D_文字.创建 ("黑体", 10,false,false, true)
文字:置颜色(颜色_蓝)

得分文字=D2D_文字.创建 ("黑体", 30,true, true,true)
得分数字 = D2D_精灵文字.创建()

-----------------图片和音乐载入
----图片
帮助素材2=引擎:载入图片("Dat/帮助素材.png")
帮助素材=引擎:载入图片("Dat/帮助.png")
失败界面图片=引擎:载入图片("Dat/失败界面.png")
暂停图片=引擎:载入图片("Dat/暂停.png")
提示一图片=引擎:载入图片("Dat/提示1.png")
背景图片1=引擎:载入图片("Dat/背景1.png")
背景图片2=引擎:载入图片("Dat/建筑后.png")
背景图片3=引擎:载入图片("Dat/建筑中.png")
背景图片4=引擎:载入图片("Dat/建筑前.png")
背景图片5=引擎:载入图片("Dat/建筑前坏.png")
准心图片1=引擎:载入图片("Dat/白准心.png")
准心图片2=引擎:载入图片("Dat/准星.png")
敌人图片=引擎:载入图片("Dat/敌人.png")
敌人图片2=引擎:载入图片("Dat/敌人消失.png")
敌人图片3=引擎:载入图片("Dat/敌人2.png")
敌人图片4=引擎:载入图片("Dat/战车.png")
碎片=引擎:载入图片("Dat/碎片.png")
战车碎片=引擎:载入图片("Dat/战车碎片.png")
水晶碎片=引擎:载入图片("Dat/水晶碎片.png")
物品=引擎:载入图片("Dat/物品.png")
物品栏图片=引擎:载入图片("Dat/物品栏.png")
血条素材=引擎:载入图片("Dat/血条.png")
血条素材2=引擎:载入图片("Dat/血条三.png")
云图片=引擎:载入图片("Dat/云.png")
油灯一=引擎:载入图片("Dat/油灯一.png")
油灯二=引擎:载入图片("Dat/油灯二.png")
血条三=引擎:载入图片("Dat/血条二.png")
主界面图片=引擎:载入图片("Dat/主界面.png")
子弹图片=引擎:载入图片("Dat/子弹.png")
特效=引擎:载入图片("Dat/mainmain.png")
按键图片=引擎:载入图片("Dat/按键.png")
板砖图片=引擎:载入图片("Dat/板砖.png")
砖图片=引擎:载入图片("Dat/砖.png")
爆炸图片=引擎:载入图片("Dat/爆炸.png")
核爆图片=引擎:载入图片("Dat/核爆.png")
维修图片=引擎:载入图片("Dat/维修.png")

--------------------mainmain-显示
枪显示1=D2D_精灵.创建(特效,531,0,128,130)
枪显示2=D2D_精灵.创建(特效,662,0,130,130)
弩显示1=D2D_精灵.创建(特效,266,0,130,130)
弩显示2=D2D_精灵.创建(特效,398,0,130,130)
-----------------------

-----帮助
帮助背景=D2D_精灵.创建(帮助素材2,0,0,440,440)
帮助精灵=D2D_精灵.创建(帮助素材,0,0,240,1056)
退出按键1=D2D_精灵.创建(帮助素材,273,1,30,30)
退出按键2=D2D_精灵.创建(帮助素材,273,32,30,30)
滑动条=D2D_精灵.创建(帮助素材,265,94,25,165)
滑块=D2D_精灵.创建(帮助素材,261,280,30,30)
滑块:置中心点(15,15)
滑块y=173
帮助y=0


----音乐
背景音效 = D2D_音效.创建("Dat/背景音效.mp3")
背景音效:播放_高级(40,true)
----其他音效
坦克音效= D2D_音效.创建("Dat/坦克.MP3")
飞机音效= D2D_音效.创建("Dat/飞机.mp3")
板砖音效= D2D_音效.创建("Dat/飞砖.wav")
弓箭音效= D2D_音效.创建("Dat/弓弩类发射.wav")
枪音效= D2D_音效.创建("Dat/枪.mp3")
敌人攻击音效= D2D_音效.创建("Dat/tankfire.mp3")
受伤音效= D2D_音效.创建("Dat/伤.wav")----主角
倒地音效= D2D_音效.创建("Dat/敌人消失.wav")----敌人
碰撞音效=D2D_音效.创建("Dat/碰撞.mp3")----敌人
高爆=D2D_音效.创建("Dat/高爆.mp3")
降落伞音效=D2D_音效.创建("Dat/降落伞.wav")
核爆音效=D2D_音效.创建("Dat/爆炸事件.wav")
爆炸音效=D2D_音效.创建("Dat/爆炸.mp3")
爆炸消失音效=D2D_音效.创建("Dat/爆.mp3")
-------------------------------爆炸动画
爆炸= D2D_动画.创建(爆炸图片,11,8,0,0,56,56)
爆炸:播放()
爆炸:置中心点(28,28)
核爆= D2D_动画.创建(核爆图片,27,14,0,0,128,128)
核爆:播放()
核爆:置中心点(64,64)

-----------------角色创建和角色变量
----精灵
---背景
四层背景=D2D_精灵.创建(背景图片1,0,0,800,600)
三层背景=D2D_精灵.创建(背景图片2,0,0,800,600)
二层背景=D2D_精灵.创建(背景图片3,0,0,800,600)
一层背景=D2D_精灵.创建(背景图片4,0,0,800,600)


云1=D2D_精灵.创建(云图片,0,0,300,200)
云2=D2D_精灵.创建(云图片,300,0,300,200)
云3=D2D_精灵.创建(云图片,600,0,200,200)
云={}
for n=1,10 do
      h=引擎:取随机整数(1,3)
      if(h==1)then
	      local 临时云={
		      x=引擎:取随机整数(0, 800),
		      y=引擎:取随机整数(0, 100),
		      精灵=云1,
			x1=引擎:取随机小数(1,3)
	      }
	      table.insert(云,临时云)
	end
	if(h==2)then
	      local 临时云={
		      x=引擎:取随机整数(0, 800),
		      y=引擎:取随机整数(0, 100),
		      精灵=云2,
			x1=引擎:取随机小数(1,3)
	      }
	      table.insert(云,临时云)
	end
	if(h==3)then
	      local 临时云={
		      x=引擎:取随机整数(0, 800),
		      y=引擎:取随机整数(0, 100),
		      精灵=云3,
			x1=引擎:取随机小数(1,3)
	      }
	      table.insert(云,临时云)
	end
end

---开始
开场提示=D2D_精灵.创建(提示一图片,0,0,572,105)
开始=0
计时k=200
开始参数={
x=800,
y=600,
d=0,
m=1,
}
开始参数2=0
主界面=D2D_精灵.创建(主界面图片,0,0,300,300)
开始按键1=D2D_精灵.创建(按键图片,50,0,50,50)
开始按键1:置中心点(25,25)
开始按键2=D2D_精灵.创建(按键图片,0,0,50,50)
开始按键2:置中心点(25,25)

开始按键=开始按键1:取包围盒()

帮助按键1=D2D_精灵.创建(按键图片,150,0,50,50)
帮助按键1:置中心点(25,25)
帮助按键2=D2D_精灵.创建(按键图片,100,0,50,50)
帮助按键2:置中心点(25,25)
帮助按键=帮助按键1:取包围盒()



---------------战斗素材
-------准心--
准星1=D2D_精灵.创建(准心图片1,0,0,100,100)
准星1:置中心点(50,50)
准星2=D2D_精灵.创建(准心图片2,0,0,100,100)
准星2:置中心点(50,50)
准星3=D2D_精灵.创建(准心图片2,100,0,100,100)
准星3:置中心点(50,50)
准星=准星1

--------子弹---
板砖=D2D_精灵.创建(砖图片,0,600,200,200)
板砖:置中心点(100,100)
水泥砖=D2D_精灵.创建(砖图片,0,0,200,200)
水泥砖:置中心点(100,100)
金砖=D2D_精灵.创建(砖图片,0,200,200,200)
金砖:置中心点(100,100)
核砖=D2D_精灵.创建(砖图片,0,400,200,200)
核砖:置中心点(100,100)

维修=D2D_精灵.创建(维修图片,0,0,50,50)
维修:置中心点(7,23)
维修d=0
维修按键=维修:取包围盒()
维修状态=1
碎片q=0
---------------子弹组----
目标组={}---------x1,y1,x2,y2,d,m,攻击,类型
攻击组={}
箭精灵=D2D_精灵.创建(子弹图片,0,0,50,50)
子弹精灵=D2D_精灵.创建(子弹图片,50,0,50,50)
计时z=10
爆炸组={}--x y 类型

--------爆炸--
碎片1=D2D_精灵.创建(碎片,100,0,30,30)
碎片1:置中心点(15,15)
碎片2=D2D_精灵.创建(碎片,130,0,20,20)
碎片2:置中心点(10,10)
碎片3=D2D_精灵.创建(碎片,150,0,10,10)
碎片3:置中心点(5,5)
碎片4=D2D_精灵.创建(碎片,130,20,20,20)
碎片4:置中心点(10,10)
碎片5=D2D_精灵.创建(碎片,150,25,10,10)
碎片5:置中心点(5,5)
碎片6=D2D_精灵.创建(碎片,170,15,30,30)
碎片6:置中心点(15,15)
碎片盔=D2D_精灵.创建(碎片,0,0,50,50)
碎片盔:置中心点(25,25)
碎片盾=D2D_精灵.创建(碎片,50,0,50,50)
碎片盾:置中心点(25,25)
碎片水晶=D2D_精灵.创建(水晶碎片,0,0,50,50)
碎片水晶:置中心点(25,25)
碎片战车=D2D_精灵.创建(战车碎片,0,0,25,25)
碎片战车:置中心点(12,12)
碎片组={}-----------------------------------碎片组:开始x,开始y,距离(0.5,1,2,3)
敌人碎片组={}
消失动画组={}


---------敌人---------------
----精灵创建 及 数据定义
敌人11=D2D_精灵.创建(敌人图片,95,0,95,130)----步
敌人12=D2D_精灵.创建(敌人图片,190,0,95,130)
敌人21=D2D_精灵.创建(敌人图片,385,0,95,130)
敌人22=D2D_精灵.创建(敌人图片,480,0,95,130)
敌人31=D2D_精灵.创建(敌人图片,670,0,95,130)
敌人32=D2D_精灵.创建(敌人图片,765,0,95,130)
敌人41=D2D_精灵.创建(敌人图片4,0,0,270,280)----战车
敌人42=D2D_精灵.创建(敌人图片4,300,3,270,280)
敌人52=D2D_精灵.创建(敌人图片3,643,0,150,200)-----飞行员1
敌人51=D2D_精灵.创建(敌人图片3,800,0,150,200)-----飞行员2
敌人61=D2D_精灵.创建(敌人图片3,260,0,160,150)-----堡垒1
敌人62=D2D_精灵.创建(敌人图片3,448,0,160,150)-----堡垒2
飞机=D2D_精灵.创建(敌人图片3,0,190,250,110)

敌人11:置中心点(40,70) ----步
敌人12:置中心点(40,70)
敌人21:置中心点(40,70)
敌人22:置中心点(40,70)
敌人31:置中心点(40,70)
敌人32:置中心点(40,70)
敌人41:置中心点(130,220)  ----战车
敌人42:置中心点(130,220)
敌人52:置中心点(75,140)-----飞行员1
敌人51:置中心点(75,140)-----飞行员2
敌人61:置中心点(80,90)-----堡垒1
敌人62:置中心点(80,90)-----堡垒2
飞机:置中心点(125,55)-----飞机
飞机x=1500

-----敌人产生点
--------后排25高
敌人点={}

暂停精灵=D2D_精灵.创建(暂停图片,0,0,800,600)

敌人点[1]={x=420,y=250, m=0.4,状态="",位置="左",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--左50
敌人点[2]={x=500,y=220, m=0.4,状态="",位置="右",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--右50
敌人点[3]={x=340,y=210, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50
敌人点[4]={x=540,y=170, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50
敌人点[5]={x=620,y=70, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50
--------中排50高
敌人点[6]={x=200,y=180 ,m=0.6,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50
敌人点[7]={x=720,y=150,m=0.6,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50

敌人点[8]={x=260,y=310,x2=300,m=0.6,状态="",位置="左",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--左50
敌人点[9]={x=600,y=310,x2=560,m=0.6,状态="",位置="右",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--右50

敌人点[10]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0}
敌人点[11]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0}
敌人点[12]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0}

飞行员产生系数=引擎:取随机整数(2500,3000)
飞行员状态=""

for n=1,12 do
      敌人点[n].消失动画=D2D_动画.创建(敌人图片2,5,5,0,0,50,50)
      敌人点[n].消失动画:置中心点(8,35)
      敌人点[n].消失动画:播放()
end

----------------------敌人完--

-----失败资源
失败界面=D2D_精灵.创建(失败界面图片,0,0,400,400)

失败动画=D2D_动画.创建(敌人图片2,5,2,0,0,50,50)

失败动画:播放()

失败=0



----------UI


血条1=D2D_精灵.创建(血条素材,0,0,11,100)
血条2=D2D_精灵.创建(血条素材,13,0,5,100)
体力背景=D2D_精灵.创建(血条素材2,0,0,360,60)
体力前景=D2D_精灵.创建(血条三,0,0,350,50)
体力={}
for n=1,7 do
      体力[n]= D2D_动画.创建(油灯一,3,3,0,0,50,50)
      体力[n]:播放()
end

物品栏=D2D_精灵.创建(物品栏图片,0,0,370,60)

弩=D2D_精灵.创建(物品,0,50,50,50)
枪=D2D_精灵.创建(物品,100,50,50,50)
炸弹=D2D_精灵.创建(物品,150,0,50,50)
炸弹:置中心点(25,25)
--------附加  其他物品
药包=D2D_精灵.创建(物品,0,0,50,50)
药包:置中心点(25,25)
子弹补给=D2D_精灵.创建(物品,50,0,50,50)
子弹补给:置中心点(25,25)
箭补给=D2D_精灵.创建(物品,50,50,50,50)
箭补给:置中心点(25,25)
-------附加完

-----换装备按键
武器1= D2D_包围盒.创建(0,0, 50,50)
武器2= D2D_包围盒.创建(0,0, 50,50)
武器3= D2D_包围盒.创建(0,0, 50,50)
武器4= D2D_包围盒.创建(0,0, 50,50)
武器5= D2D_包围盒.创建(0,0, 50,50)
武器6= D2D_包围盒.创建(0,0, 50,50)
武器7= D2D_包围盒.创建(0,0, 50,50)
-----换装备按键完


---------------游戏变量
-------墙
坚固=150
墙=1
计时q=50
主角体力=140
当前武器="板砖"
当前攻击=7
当前精度=20
箭=10
子弹=10
当前初始x=800
当前初始y=600
当前音效=板砖音效

--敌人产生控制--

计数=0

得分=0

当前波数=0



掉落率=2
掉落物品=0
掉落参数=0

补给组={}

倒计时bj=1000 --补给










-----------------控制变量
操作状态="空闲"
游戏状态="开始"
鼠标x=0
鼠标y=0
暂停="否"

--===============================================================================
-- ■ 屏幕逻辑()
--===============================================================================
function 屏幕逻辑 ()

--------动画更新-----------
时间 = 引擎:取最后帧时间()

for n=1,table.getn(体力) do
      体力[n]:更新(时间)
end
爆炸:更新(时间)
核爆:更新(时间)
for n=1,12 do
      敌人点[n].消失动画:更新(时间)
end




鼠标x,鼠标y= 引擎:取鼠标坐标()


	--------------背景及显示系统
	for n=1,table.getn(云) do
	      if(云[n].x<800)then
	            云[n].x=云[n].x+云[n].x1/10
		else
		      云[n].x=-200
		end
	end
	
	
	--------------计分系统
	当前波数=取整(计数/7)+1
	
	

	
	
	return false
end




--===============================================================================
-- ■ 屏幕渲染()
--===============================================================================
function 屏幕渲染 ()
	渲染开始()
	清屏(ARGB(255,128,128,128))
	
	--------------暂停系统-
	if(暂停=="是")then
	      暂停精灵:显示()
		if(引擎:取按键按下(键_鼠标左))then
		      暂停="否"
		end
	else
	--------------背景及显示系统
	四层背景:显示()
	for n=1,table.getn(云) do
	      云[n].精灵:显示_高级(云[n].x,云[n].y,0,0.7,0.5)
		云[n].精灵:置颜色(ARGB(125,255,255,255))
	end
	------后排敌人
	if(游戏状态=="战斗")then
	---------后排敌人产生及显示
	for  n=1,5  do
	      if(敌人点[n].状态=="")and(当前波数>1)then 
	            敌人点[n].计时=敌人点[n].计时-1
		      if(敌人点[n].计时<=0)then
		            敌人点[n].状态="产生"
				敌人点[n].产生系数=50
				敌人点[n].临时=引擎:取随机整数(1,10)
				if(当前波数<4)or(敌人点[n].临时<4)then
				      敌人点[n].类型=敌人11
					敌人点[n].k=5
				      敌人点[n].攻击=0.5
					敌人点[n].血量=7
				else
					if(敌人点[n].临时<7)then
					      敌人点[n].类型=敌人21
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=7
					else
						敌人点[n].类型=敌人31
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=10
					end
				end
				敌人点[n].计时=引擎:取随机整数(150,250)
			end
		end
		if(敌人点[n].状态=="产生")then
		      if(敌人点[n].位置=="左")then
		            敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="下")then
		            敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="右")then
		            敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k
			if(敌人点[n].产生系数<=0)then
			      敌人点[n].状态="正常"
				敌人点[n].产生系数=引擎:取随机整数(100,120)
			end
		end
		if(敌人点[n].状态=="正常")then
		      敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
		      敌人点[n].产生系数=敌人点[n].产生系数-1
			if(敌人点[n].产生系数<=0)then
			      
			      if(敌人点[n].类型==敌人11)then
			            敌人点[n].类型=敌人12
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人21)then
				      敌人点[n].类型=敌人22
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人22)then
				      敌人点[n].类型=敌人21
					敌人点[n].产生系数=引擎:取随机整数(100,120)
				elseif(敌人点[n].类型==敌人31)then
				      敌人点[n].类型=敌人32
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人32)then
				      敌人点[n].类型=敌人31
					敌人点[n].产生系数=引擎:取随机整数(100,120)
				elseif(敌人点[n].类型==敌人12)then
			            敌人点[n].类型=敌人11
					敌人点[n].产生系数=引擎:取随机整数(100,120)
				end
				
			end
		end
		
	end
	
	end
	
	
	三层背景:显示()
	-------中排敌人
	if(游戏状态=="战斗")then
	---------中排敌人产生及显示
	for  n=6,7  do
	      if(敌人点[n].状态=="")then 
	            敌人点[n].计时=敌人点[n].计时-1
		      if(敌人点[n].计时<=0)then
		            敌人点[n].状态="产生"
				敌人点[n].产生系数=50
				敌人点[n].临时=引擎:取随机整数(1,10)
				if(当前波数<4)or(敌人点[n].临时<4)then
				      敌人点[n].类型=敌人11
					敌人点[n].k=5
				      敌人点[n].攻击=0.5
					敌人点[n].血量=7
				else
					if(敌人点[n].临时<7)then
					      敌人点[n].类型=敌人21
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=7
					else
						敌人点[n].类型=敌人31
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=10
						end
				end
				敌人点[n].计时=引擎:取随机整数(100,200)
			end
		end
		if(敌人点[n].状态=="产生")then
		      if(敌人点[n].位置=="左")then
		            敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="下")then
		            敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="右")then
		            敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k
			if(敌人点[n].产生系数<=0)then
			      敌人点[n].状态="正常"
				敌人点[n].产生系数=引擎:取随机整数(70,100)
			end
		end
		if(敌人点[n].状态=="正常")then
		      敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
		      敌人点[n].产生系数=敌人点[n].产生系数-1
			if(敌人点[n].产生系数<=0)then
			      
			      if(敌人点[n].类型==敌人11)then
			            敌人点[n].类型=敌人12
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人21)then
				      敌人点[n].类型=敌人22
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人22)then
				      敌人点[n].类型=敌人21
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				elseif(敌人点[n].类型==敌人31)then
				      敌人点[n].类型=敌人32
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人32)then
				      敌人点[n].类型=敌人31
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				elseif(敌人点[n].类型==敌人12)then
			            敌人点[n].类型=敌人11
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				end
				
			end
		end
		
	end
	
	for  n=8,9  do
	      if(敌人点[n].状态=="")then 
	            敌人点[n].计时=敌人点[n].计时-1
		      if(敌人点[n].计时<=0)then
		            敌人点[n].状态="产生"
				敌人点[n].产生系数=50
				敌人点[n].临时=引擎:取随机整数(1,15)
				if(当前波数<4)or(敌人点[n].临时<5)then
				      敌人点[n].类型=敌人11
					敌人点[n].k=5
				      敌人点[n].攻击=0.5
					敌人点[n].血量=7
				else
					if(敌人点[n].临时<9)then
					      敌人点[n].类型=敌人21
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=7
					elseif(敌人点[n].临时<13)then
						敌人点[n].类型=敌人31
						敌人点[n].k=5
				            敌人点[n].攻击=0.5
						敌人点[n].血量=10
					else
						敌人点[n].类型=敌人41
						敌人点[n].k=0.4
				            敌人点[n].攻击=0.15
						敌人点[n].弹量=5
						敌人点[n].产生系数=100
						坦克音效:播放()
						敌人点[n].血量=30
					end
				end
				敌人点[n].计时=引擎:取随机整数(150,200)
			end
		end
		if(敌人点[n].状态=="产生")then
		      if(敌人点[n].类型==敌人41)then
			if(敌人点[n].位置=="左")then
		            敌人点[n].类型:显示_高级(敌人点[n].x2-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="右")then
		            敌人点[n].类型:显示_高级(敌人点[n].x2+敌人点[n].产生系数,敌人点[n].y,0,-1*敌人点[n].m,敌人点[n].m)
			end
			else
		      if(敌人点[n].位置=="左")then
		            敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="下")then
		            敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m)
			end
			if(敌人点[n].位置=="右")then
		            敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			end
			敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k
			if(敌人点[n].产生系数<=0)then
			      敌人点[n].状态="正常"
				敌人点[n].产生系数=引擎:取随机整数(70,100)
			end
		end
		if(敌人点[n].状态=="正常")then
		      if(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)then
			if(敌人点[n].位置=="右")then
			敌人点[n].类型:显示_高级(敌人点[n].x2,敌人点[n].y,0,-1*敌人点[n].m,敌人点[n].m)
			else
			敌人点[n].类型:显示_高级(敌人点[n].x2,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
			else
		      敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			end
		      敌人点[n].产生系数=敌人点[n].产生系数-1
			if(敌人点[n].产生系数<=0)then
			      
			      if(敌人点[n].类型==敌人11)then
			            敌人点[n].类型=敌人12
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人21)then
				      敌人点[n].类型=敌人22
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人22)then
				      敌人点[n].类型=敌人21
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				elseif(敌人点[n].类型==敌人31)then
				      敌人点[n].类型=敌人32
					敌人点[n].产生系数=10
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人32)then
				      敌人点[n].类型=敌人31
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				elseif(敌人点[n].类型==敌人12)then
			            敌人点[n].类型=敌人11
					敌人点[n].产生系数=引擎:取随机整数(70,100)
				elseif(敌人点[n].类型==敌人41)then
				      敌人点[n].弹量=敌人点[n].弹量-1
					敌人点[n].类型=敌人42
					敌人点[n].产生系数=5
					敌人攻击音效:播放()
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人42)then
				      敌人点[n].类型=敌人41
					if(敌人点[n].弹量<=0)then
					      敌人点[n].产生系数=引擎:取随机整数(120,200)
						敌人点[n].弹量=5
					else
						敌人点[n].产生系数=5
					end
				end
				
			end
		end
		
	end
	
	
	
	
	
	
	end
	
	
	
	二层背景:显示()
	-------前排敌人--
	if(游戏状态=="战斗")then
	
	if(当前波数>7)and(飞行员状态=="")and(敌人点[10].状态=="")and(敌人点[11].状态=="")and(敌人点[12].状态=="")then
	     飞行员产生系数=飞行员产生系数-1
	     if(飞行员产生系数<=0)then
	            飞行员状态="产生"
			飞机音效:播放()
			飞行员产生系数=引擎:取随机整数(200,3000)
	            for n=10,12 do
			      敌人点[n].x=引擎:取随机整数(300,600)
			end
	     end
	end
     for n=10,12 do
		if(飞行员状态=="产生")then
		      
		      飞机x=飞机x-1
			if(飞机x<-300)then
			      飞行员状态=""
				飞机x=1500
			end
		      飞机:显示_高级(飞机x,55,0,-1,1)
		      if(飞机x>=敌人点[n].x-20)and(飞机x<=敌人点[n].x)and(敌人点[n].状态=="")then
			      降落伞音效:播放()
			      敌人点[n].状态="产生"
				敌人点[n].临时=0
				敌人点[n].y=100
				敌人点[n].类型=敌人51
				敌人点[n].攻击=1.5
				敌人点[n].血量=30
			end
		end
		if(敌人点[n].状态=="产生")then
		      敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m*敌人点[n].临时,敌人点[n].m*敌人点[n].临时)
			敌人点[n].y=敌人点[n].y+0.5
			敌人点[n].临时=敌人点[n].临时+0.05
			if(敌人点[n].临时>=1)then
			      敌人点[n].状态="正常"
				敌人点[n].临时=引擎:取随机整数(200,250)
			end
		end
		if(敌人点[n].状态=="正常")then
		      敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m)
			if(敌人点[n].类型==敌人51)then
			      敌人点[n].y=敌人点[n].y+0.25
			end
			if(敌人点[n].y>=敌人点[n].y2)and(敌人点[n].类型==敌人51)then
			      敌人点[n].类型=敌人61
				敌人点[n].y=敌人点[n].y2
				敌人点[n].攻击=0.5
				敌人点[n].弹量=7
				敌人点[n].血量=50
				敌人点[n].临时=引擎:取随机整数(100,150)
			end
			敌人点[n].临时=敌人点[n].临时-1
			if(敌人点[n].临时<=0)then
			      if(敌人点[n].类型==敌人51)then
				      敌人点[n].类型=敌人52
					敌人攻击音效:播放()
					敌人点[n].临时=10
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
				elseif(敌人点[n].类型==敌人52)then
				      敌人点[n].类型=敌人51
					敌人点[n].临时=引擎:取随机整数(200,250)
				elseif(敌人点[n].类型==敌人61)then
				      敌人点[n].类型=敌人62
					敌人攻击音效:播放()
					敌人点[n].弹量=敌人点[n].弹量-1
					if(墙==1)then
					      坚固=坚固-敌人点[n].攻击
					else
						主角体力=主角体力-敌人点[n].攻击
					end
					敌人点[n].临时=5
				elseif(敌人点[n].类型==敌人62)then
					敌人点[n].类型=敌人61
					if(敌人点[n].弹量<=0)then
					      敌人点[n].临时=引擎:取随机整数(100,150)
						敌人点[n].弹量=7
					else
					      敌人点[n].临时=5
					end
				end
			end
		end
	end
	
	end
	
	一层背景:显示()
	
	--开始界面-------------------------------------
	if(游戏状态=="开始")then
	      if(开始==0)then-----
	      主界面:显示(20,90)
		开始按键:置位置(675,375)
		if(开始按键:检测_点(鼠标x,鼠标y))then
		      开始按键1:显示(700,400)
			if(引擎:取按键按下(键_鼠标左))then
			      for n=1,10 do
				      local 临时碎片={
					------------------例子
					x=170,
					y=210,
					d=0,
					m=3,
					vx=引擎:取随机小数(-15,15),
					vy=引擎:取随机小数(-10,1),
					精灵=碎片1
					}
					table.insert(碎片组,临时碎片)
				end
				for n=1,10 do
				      local 临时碎片={
					x=170,
					y=210,
					d=0,
					m=3,
					vx=引擎:取随机小数(-15,15),
					vy=引擎:取随机小数(-10,1),
					精灵=碎片3
					}
					table.insert(碎片组,临时碎片)
				end
				for n=1,10 do
				      local 临时碎片={
					x=170,
					y=210,
					d=0,
					m=3,
					vx=引擎:取随机小数(-15,15),
					vy=引擎:取随机小数(-10,1),
					精灵=碎片5
					}
					table.insert(碎片组,临时碎片)
				end
			      开始=1
				板砖音效:播放()
			end
		else
		      开始按键2:显示(700,400)
		end
		帮助按键:置位置(675,450)
		if(帮助按键:检测_点(鼠标x,鼠标y))then
		      帮助按键1:显示(700,475)
			if(引擎:取按键按下(键_鼠标左))then---------------帮助
			      滑块y=173
			      游戏状态="帮助"
			end
		else
		      帮助按键2:显示(700,475)
		end
		end-------
		if(开始==1)then
		      --------开始动画--170,210
			计时k=计时k-1
			if(开始参数.x-170>10)then
			      主界面:显示(20,90)
			      板砖:显示_高级(开始参数.x,开始参数.y,开始参数.d,开始参数.m,开始参数.m)
			      开始参数.x=170+(开始参数.x-170)*0.95
			      开始参数.y=210+(开始参数.y-210)*0.95
			      开始参数.d=开始参数.d+引擎:取随机小数(0.5,0.7)
			      开始参数.m=开始参数.m*0.97
			end
			if(开始参数.x-170<10+1)and(开始参数.x-170>10)then
			      高爆:播放()
				爆炸:置当前帧(0)
			end
			if(开始参数.x-170<10)then
			      
			      for n=1,table.getn(碎片组)do
				      碎片组[n].精灵:显示_高级(碎片组[n].x,碎片组[n].y,碎片组[n].d,碎片组[n].m,碎片组[n].m)
					碎片组[n].x=碎片组[n].x+碎片组[n].vx
					碎片组[n].y=碎片组[n].y+碎片组[n].vy
					碎片组[n].vy=碎片组[n].vy+0.2
					碎片组[n].d=碎片组[n].d+引擎:取随机小数(0.5,0.7)
				end
				if(开始参数2==0)then
			            爆炸:显示_高级(170,210,0,3,3)
					if(爆炸:取当前帧()==10)then
					      开始参数2=1
					end
				end
				if(计时k<60)then
				      开场提示:显示(65,50)
			      end
			end 
			--------数据初始
			if(计时k<0)then
			      for n=1,table.getn(碎片组)do
				      table.remove(碎片组,n)
					break
				end
				计时k=200
				开始=0
                        开始参数.x=800
                        开始参数.y=600
                        开始参数.d=0
                        开始参数.m=1
				开始参数2=0
				游戏状态="战斗"
			end
		end
	end
	
	----帮助
	if(游戏状态=="帮助")then
	      帮助背景:显示_高级(170,70,0,1.13,1.04)
	      帮助y=(滑块y-173)*850/306
	      帮助精灵:置显示区域(0,帮助y,241,200)
		帮助精灵:显示_高级(200,100,0,400/241,2)
		滑动条:显示_高级(600,150,0,5/3,350/165)
		滑块:显示_高级(621,滑块y,0,1.4,1.4)
		退出按键1:显示_高级(600,100,0,1.6,1.6)
		if(退出按键1:取包围盒():检测_点(鼠标x,鼠标y))then
		      退出按键2:显示_高级(600,100,0,1.6,1.6)
			if(引擎:取按键按下(键_鼠标左))then
			      游戏状态="开始"
			end
		end
		--173,479
		if(滑块:取包围盒():检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then
		      if(鼠标y<=173)then
			      滑块y=173
			elseif(鼠标y>=479)then
			      滑块y=479
			else
			      滑块y=鼠标y
			end
		end
		
	end
	
	
	if(游戏状态=="战斗")then
	----------------战斗界面-----
	--------敌人产生系统-------
	
	--------------射击系统
	
	if(引擎:取按键按下(键_鼠标左))and(操作状态=="空闲")then
	if(墙==0)or(鼠标x>600)or(鼠标y<370)then
	      操作状态="战斗"
		当前音效:播放()
		-----添加-子弹--
		local 临时目标={
		      x1=鼠标x+引擎:取随机小数(-1*当前精度,当前精度),
			y1=鼠标y+引擎:取随机小数(-1*当前精度,当前精度),
			x2=当前初始x,
			y2=当前初始y,
			d=0,
			m=1,
			攻击=当前攻击,
			类型=当前武器
		}
		
		table.insert(目标组,临时目标)
		
		if(当前武器=="弩")then
		      箭=箭-1
		end
		if(当前武器=="枪")then
		      子弹=子弹-1
		end
		if(当前武器=="金砖")and(得分>10)then
		      得分=得分-10
		end
	end
	end
	
	if(操作状态=="战斗")then
	      计时z=计时z-1
		if(计时z<0)then
	            操作状态="待机"
		      计时z=10
		end
	end
	if(操作状态=="待机")then
	      计时z=计时z-1
		if(计时z<0)then
	            操作状态="空闲"
		      计时z=10
		end
	end
	
	--------系统显示----

	if(操作状态=="空闲")then
	------------------
	
	if(当前武器=="板砖")then
	      板砖:显示(750,550)
	end
	if(当前武器=="水泥砖")then
	      水泥砖:显示(750,550)
	end
	if(当前武器=="金砖")then
	      金砖:显示(750,550)
	end
	if(当前武器=="核砖")then
	      核砖:显示(750,550)
	end
	if(当前武器=="炸弹")then
	      炸弹:显示_高级(750,550,0,3,3)
	end
	if(当前武器=="弩")then
	      弩显示2:显示_高级(540,340,0,2,2)
	end
	if(当前武器=="枪")then
	      枪显示1:显示_高级(542,340,0,2,2)
	end
	
	
	--------------
	end
	
	------
	
	if(操作状态=="待机")then 
	--------------
	
	if(当前武器=="板砖")then
	      板砖:显示(750,610)
	end
	if(当前武器=="水泥砖")then
	      水泥砖:显示(750,610)
	end
	if(当前武器=="金砖")then
	      金砖:显示(750,610)
	end
	if(当前武器=="核砖")then
	      核砖:显示(750,610)
	end
	if(当前武器=="炸弹")then
	      炸弹:显示_高级(750,610,0,3,3)
	end
	if(当前武器=="弩")then
	      弩显示1:显示_高级(540,340,0,2,2)
	end
	if(当前武器=="枪")then
	      枪显示1:显示_高级(542,340,0,2,2)
	end
	
	-----------------
	end
      
	if(操作状态=="战斗")then
	      if(当前武器=="弩")then
	            弩显示1:显示_高级(540,340,0,2,2)
	      end
	      if(当前武器=="枪")then
	            枪显示2:显示_高级(540,340,0,2,2)
	      end
		
		
	end
	----特殊武器判断
	
	if(当前武器=="金砖")then
	      掉落率=20
	else
		掉落率=2
	end
	
	if(当前武器=="核砖")then
	      主角体力=主角体力-0.04
	end
	
	if(当前武器=="水泥砖")and(坚固<150)then
	      维修:显示_高级(75,570,维修d,1.5,1.5)
	      维修按键:置位置(75,550)
	      if(维修按键:检测_点(鼠标x,鼠标y))then
		      坚固=坚固+0.075
		      if(维修状态==1)then
			      维修d=维修d+0.05
			      if(维修d>0.45)then
				      维修状态=0
				end
			end
			if(维修状态==0)then
			      维修d=维修d-0.05
			      if(维修d<-0.45)then
				      维修状态=1
				end
			end
		else
		      维修状态=1
			维修d=0
		end
	end
	
	if(当前武器=="弩")and(箭==0)then
	       当前武器="板砖"
		准星=准星1
		当前精度=20
		当前攻击=7
		当前初始x=800
            当前初始y=600
		当前音效=板砖音效
	end
	if(当前武器=="金砖")and(得分<15)then
	       当前武器="板砖"
		准星=准星1
		当前精度=20
		当前攻击=7
		当前初始x=800
            当前初始y=600
		当前音效=板砖音效
	end
	if(当前武器=="枪")and(子弹==0)then
	      当前武器="板砖"
		准星=准星1
		当前精度=20
		当前攻击=7
		当前初始x=800
            当前初始y=600
		当前音效=板砖音效
	end
	
	
	-------子弹显示----------
	for n=1,table.getn(目标组)do
	     
	      if(目标组[n].类型=="板砖")then
		      板砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m)
			目标组[n].d=目标组[n].d+引擎:取随机小数(0,1)
		end
		if(目标组[n].类型=="水泥砖")then
		      水泥砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m)
			目标组[n].d=目标组[n].d+引擎:取随机小数(0,1)
		end
		if(目标组[n].类型=="金砖")then
		      金砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m)
			目标组[n].d=目标组[n].d+引擎:取随机小数(0,1)
		end
		if(目标组[n].类型=="核砖")then
		      核砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m)
			目标组[n].d=目标组[n].d+引擎:取随机小数(0,1)
		end
		if(目标组[n].类型=="弩")then
		      箭精灵:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,3*目标组[n].m,3*目标组[n].m)
		end
		if(目标组[n].类型=="枪")then
		      子弹精灵:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m)
		end
		if(目标组[n].类型=="炸弹")then
		      炸弹:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,5*目标组[n].m,5*目标组[n].m)
		     目标组[n].d=目标组[n].d+引擎:取随机小数(0,1)
		end
		
		目标组[n].x2=目标组[n].x1+(目标组[n].x2-目标组[n].x1)*0.95
		目标组[n].y2=目标组[n].y1+(目标组[n].y2-目标组[n].y1)*0.95
		目标组[n].m=目标组[n].m*0.96
		
		if((目标组[n].y2-目标组[n].y1)<=5)then
		      if(目标组[n].类型=="炸弹")then
			    if(引擎:取随机整数(0,100)>50)then
			      local 临时爆炸={
				      x=目标组[n].x1,
					y=目标组[n].y1,
					类型= D2D_动画.创建(爆炸图片,11,8,0,0,56,56),
					威力=50,
					m=2,
					l=10
				}
				临时爆炸.类型:播放(28,28)
				临时爆炸.类型:置中心点(32,32)
				爆炸音效:播放()
				table.insert(爆炸组,临时爆炸)
				end
			elseif(目标组[n].类型=="核砖")then
			      local 临时爆炸={
				      x=目标组[n].x1,
					y=目标组[n].y1,
					类型= D2D_动画.创建(核爆图片,27,14,0,0,128,128),
					威力=100,
					m=1.5,
					l=26
				}
	                  临时爆炸.类型:播放()
				临时爆炸.类型:置中心点(64,64)
				table.insert(爆炸组,临时爆炸)
				核爆音效:播放()
			else
			      local 临时攻击={x=目标组[n].x1,y=目标组[n].y1,攻击力=目标组[n].攻击}
			      table.insert(攻击组,临时攻击)
			end
		      table.remove(目标组,n)
			break
		end
	 end
	
	for n=1,table.getn(爆炸组) do
	      爆炸组[n].类型:更新(时间)
	      爆炸组[n].类型:显示_高级(爆炸组[n].x,爆炸组[n].y,0,爆炸组[n].m,爆炸组[n].m)
		if(爆炸组[n].类型:取当前帧()==1)then
	            for m=1,12 do
		            if(敌人点[m].状态=="正常")and(敌人点[m].被击中==0)then
				      if(爆炸组[n].类型:取包围盒():检测_点(敌人点[m].x,敌人点[m].y))then
			                  敌人点[m].血量=敌人点[m].血量-爆炸组[n].威力
					      敌人点[m].被击中=1
				      end
			      end
		      end
		end
		if(爆炸组[n].类型:取当前帧()==爆炸组[n].l)then
	            table.remove(爆炸组,n)
			break
		end
	end
	
	
	-------大招系统
	
	
	
	
	
	
	--------------游戏判断
	
	------击中判断--
	for n=1,table.getn(攻击组) do
	      for m=1,12 do
		      if(敌人点[m].状态=="正常")and(敌人点[m].被击中==0)then
			      if(2500>((敌人点[m].x-攻击组[n].x)*(敌人点[m].x-攻击组[n].x)+(敌人点[m].y-攻击组[n].y-20)*(敌人点[m].y-攻击组[n].y-20))/敌人点[m].m)then
		                  敌人点[m].血量=敌人点[m].血量-攻击组[n].攻击力
					敌人点[m].被击中=1
					table.remove(攻击组,n)
		                  break
			      end
		      end
		end
	      table.remove(攻击组,n)
		break
	end

	
	
	
	
	
	
	------------敌人受伤动画--
	
	
	for n=1,12 do
	      --准备
	      if(敌人点[n].被击中==1)and(敌人点[n].状态=="正常")then
		      if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then
			      敌人点[n].消失动画:置当前帧(0)
			elseif(敌人点[n].类型==敌人51)or(敌人点[n].类型==敌人52)or(敌人点[n].类型==敌人61)or(敌人点[n].类型==敌人62)then
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)}
				table.insert(敌人碎片组,临时碎片)
				碰撞音效:播放()
			elseif(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)then
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				碰撞音效:播放()
			else
			      local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片2,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				碰撞音效:播放()
			end
			敌人点[n].被击中=2
		end
		--播放
		if(敌人点[n].被击中==2)then
		      if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then
			      敌人点[n].消失动画:显示_高级(敌人点[n].x,敌人点[n].y,0,2*敌人点[n].m,2*敌人点[n].m)
				if(敌人点[n].消失动画:取当前帧()==4)then
				      敌人点[n].被击中=0
				end
			else
				敌人点[n].被击中=0
			end
		end
		
		
		if(敌人点[n].血量<=0)and(敌人点[n].状态=="正常")then
		  --准备
		if(敌人点[n].消失==0)then
		      if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then
			      倒地音效:播放()
			      敌人点[n].消失动画:置当前帧(0)
			else
			      if(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)or(敌人点[n].类型==敌人61)or(敌人点[n].类型==敌人62)or(敌人点[n].类型==敌人51)or(敌人点[n].类型==敌人52)then
			            local 临时动画={动画= D2D_动画.创建(爆炸图片,11,8,0,0,56,56),x=敌人点[n].x,y=敌人点[n].y,m=敌人点[n].m}
				      table.insert(消失动画组,临时动画)
					for m=1,table.getn(消失动画组) do
	                              消失动画组[m].动画:播放()
					end
					爆炸消失音效:播放()
				end
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-1,1),vy=引擎:取随机小数(-2,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-1,1),vy=引擎:取随机小数(-2,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
			      local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片2,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
				local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)}
				table.insert(敌人碎片组,临时碎片)
			end
			敌人点[n].消失=1
		end
		--播放--计分--
		if(敌人点[n].消失==1)then
		      if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then
			      敌人点[n].消失动画:显示_高级(敌人点[n].x,敌人点[n].y,0,2,2)
				if(敌人点[n].消失动画:取当前帧()==4)then
				      敌人点[n].状态=""
				      敌人点[n].消失=0
					计数=计数+1
					得分=得分+10
					掉落参数=引擎:取随机整数(0,100)
			           if(掉落参数>100-掉落率)then
		                	      掉落物品=引擎:取随机整数(1,3)
		                  end
		                  	掉落参数=0
		     		end
			else
				if(敌人点[n].类型==敌人21)or(敌人点[n].类型==敌人22)or(敌人点[n].类型==敌人31)or(敌人点[n].类型==敌人32)then
				            敌人点[n].类型=敌人11
				            敌人点[n].攻击=0.5
					      敌人点[n].血量=7
						得分=得分+10
					else
					      敌人点[n].状态=""
						得分=得分+10
					end
				      敌人点[n].消失=0
				end
			end
		end
	end
	
	for m=1,table.getn(消失动画组) do
	      消失动画组[m].动画:置中心点(28,28)
	      消失动画组[m].动画:更新(时间)
	      消失动画组[m].动画:显示_高级(消失动画组[m].x,消失动画组[m].y,0,4*消失动画组[m].m,4*消失动画组[m].m)
		if(消失动画组[m].动画:取当前帧()==10)then 
		      table.remove(消失动画组,m)
			break
		end 
	end
	
      for n=1,table.getn(敌人碎片组)do
		敌人碎片组[n].类型:显示_高级(敌人碎片组[n].x,敌人碎片组[n].y,敌人碎片组[n].d,0.5,0.5)
		敌人碎片组[n].x=敌人碎片组[n].x+敌人碎片组[n].vx
		敌人碎片组[n].y=敌人碎片组[n].y+敌人碎片组[n].vy
		敌人碎片组[n].vy=敌人碎片组[n].vy+0.1
		敌人碎片组[n].d=敌人碎片组[n].d+引擎:取随机小数(0.5,0.7)
		if(敌人碎片组[n].vy>4)then
		      table.remove(敌人碎片组,n)
			break
      	end
	end
	

	------动画完--
	
	---------奖励判断--
	if(倒计时bj>0)then
	      倒计时bj=倒计时bj-1
	else
	      掉落物品=引擎:取随机整数(1,3)
		倒计时bj=1000
	end
	
	if(掉落物品==1)then
	      local 临时物品={类型=药包,x=引擎:取随机整数(200,600),y=0}
		table.insert(补给组,临时物品)
	elseif(掉落物品==2)then
	      local 临时物品={类型=子弹补给,x=引擎:取随机整数(200,600),y=0}
		table.insert(补给组,临时物品)
	elseif(掉落物品==3)then
	      local 临时物品={类型=箭补给,x=引擎:取随机整数(200,600),y=0}
		table.insert(补给组,临时物品)
	end
	
	掉落物品=0
	
	for n=1,table.getn(补给组) do
	      补给组[n].类型:显示(补给组[n].x,补给组[n].y)
		if(补给组[n].y<340)then
		      补给组[n].y=补给组[n].y+1
		end
		if(补给组[n].类型:取包围盒():检测_点(鼠标x,鼠标y))then
		      操作状态="拾取"
			if(引擎:取按键按下(键_鼠标左))then
			      操作状态="空闲"
			      if(补给组[n].类型==药包)then
				      if(主角体力<=120)then
				            主角体力=主角体力+20
					else
					      主角体力=140
					end
				elseif(补给组[n].类型==箭补给)then
				      箭=箭+10
				else
				      子弹=子弹+10
				end
				table.remove(补给组,n)
				break
			end
		else
		      操作状态="空闲"
		end
	end
	
	
	-------城墙判断
	if(坚固<0)then
	      坚固=0
	end
	
	if(坚固<=0)and(墙==1)then
	      if(碎片q==0)then
	      for n=1,50 do
		      local 临时碎片={
			------------------例子
			x=引擎:取随机整数(200,450),
			y=引擎:取随机整数(400,500),
			d=0,
			m=3,
			vx=引擎:取随机小数(-15,15),
			vy=引擎:取随机小数(-10,1),
			精灵=碎片1
			}
	            table.insert(碎片组,临时碎片)
		end
		for n=1,50 do
		      local 临时碎片={
			x=引擎:取随机整数(200,450),
			y=引擎:取随机整数(400,500),
			d=0,
			m=3,
			vx=引擎:取随机小数(-15,15),
			vy=引擎:取随机小数(-10,1),
			精灵=碎片2
			}
			table.insert(碎片组,临时碎片)
		end
		高爆:播放()
		for n=1,50 do
		      local 临时碎片={
			x=引擎:取随机整数(200,450),
			y=引擎:取随机整数(400,500),
			d=0,
			m=3,
			vx=引擎:取随机小数(-15,15),
			vy=引擎:取随机小数(-10,1),
			精灵=碎片3
			}
			table.insert(碎片组,临时碎片)
		end
		碎片q=1
	      end
	      计时q=计时q-1
		for n=1,table.getn(碎片组)do
		      碎片组[n].精灵:显示_高级(碎片组[n].x,碎片组[n].y,碎片组[n].d,碎片组[n].m,碎片组[n].m)
			碎片组[n].x=碎片组[n].x+碎片组[n].vx
			碎片组[n].y=碎片组[n].y+碎片组[n].vy
			碎片组[n].vy=碎片组[n].vy+0.2
			碎片组[n].d=碎片组[n].d+引擎:取随机小数(0.5,0.7)
		end
		if(计时q<0)then
	            一层背景:置图片(背景图片5)
			墙=0
			计时q=50
			for n=1,table.getn(碎片组)do
				table.remove(碎片组,n)
				break
			end
			碎片q=0
		end
	end
	if(墙==0)then
	      if(坚固>10)then
		      墙=1
			一层背景:置图片(背景图片4)
		end
	end
	
	
	end
	---------------战斗代码完---
	
	-----------------UI-----------
	if(游戏状态=="战斗")then
	      血条1:显示_高级(10,397,0,2,2.04)
	      血条2:显示_高级(14,600-4/3*坚固,0,2.8,坚固/75)
	end
	
	
	if(游戏状态=="战斗")and(失败==0)then
	---------------------------主角体力--
	体力背景:显示()
	
	体力前景:显示_高级(主角体力*2.5,0,0,(140-主角体力)*2.5/350,1)
	
	for n=1,table.getn(体力) do
            体力[n]:显示(50*(n-1),0)
      end
	
	for n=1,取整(主角体力/20)  do
	      体力[n]:置图片(油灯一)
	end
	
	for n=取整(主角体力/20)+2,7 do
	      体力[n]:置图片(油灯二)
	end
	
	物品栏:显示(190,540)
	------物品显示及操作------
	板砖:显示_高级(225,575,0,0.25,0.25)
	水泥砖:显示_高级(275,575,0,0.25,0.25)
	金砖:显示_高级(325,575,0,0.25,0.25)
	核砖:显示_高级(375,575,0,0.25,0.25)
	弩:显示(400,550)
	枪:显示(450,550)
	炸弹:显示(525,575)
	
	文字:显示(430,590,箭)
	文字:显示(480,590,子弹)
	
	------
	武器1:置位置(200,550)
	武器2:置位置(250,550)
	武器3:置位置(300,550)
	武器4:置位置(350,550)
	武器5:置位置(400,550)
	武器6:置位置(450,550)
	武器7:置位置(500,550)
	
	-----------------------------换武器--
	
	if(武器1:检测_点(鼠标x,鼠标y))then
		      武器1:显示()
			if(引擎:取按键按下(键_鼠标右))then
			      当前武器="板砖"
				准星=准星1
				当前精度=15
				当前攻击=7
				当前初始x=800
                        当前初始y=600
				当前音效=板砖音效
			end
	end
	if(武器2:检测_点(鼠标x,鼠标y))then
		      武器2:显示()
			if(引擎:取按键按下(键_鼠标右))then
			      当前武器="水泥砖"
				准星=准星1
				当前精度=10
				当前攻击=6
				当前初始x=800
                        当前初始y=600
				当前音效=板砖音效
			end
	end
	if(武器3:检测_点(鼠标x,鼠标y))then
		      武器3:显示()
			if(引擎:取按键按下(键_鼠标右))then
			      当前武器="金砖"
				准星=准星1
				当前精度=20
				当前攻击=10
				当前初始x=800
                        当前初始y=600
				当前音效=板砖音效
			end
	end
	if(武器4:检测_点(鼠标x,鼠标y))then
		      武器4:显示()
			if(引擎:取按键按下(键_鼠标右))then
			      当前武器="核砖"
				准星=准星1
				当前精度=50
				当前攻击=0
				当前初始x=800
                        当前初始y=600
				当前音效=板砖音效
			end
	end
	if(武器5:检测_点(鼠标x,鼠标y))then
		      武器5:显示()
			if(引擎:取按键按下(键_鼠标右))then
			if(箭>0)then
			      当前武器="弩"
				准星=准星2
				当前精度=5
				当前攻击=15
				当前初始x=580
                        当前初始y=381
				当前音效=弓箭音效
			else
			      -------------------没子弹提示
				
			end
			end
	end
	if(武器6:检测_点(鼠标x,鼠标y))then
		      武器6:显示()
			if(引擎:取按键按下(键_鼠标右))then
			if(子弹>0)then
			      当前武器="枪"
				准星=准星3
				当前精度=5
				当前攻击=20
				当前初始x=583
                        当前初始y=433
				当前音效=枪音效
			else
			      ------------
				
			end
			end
	end
	if(武器7:检测_点(鼠标x,鼠标y))then
		      武器7:显示()
			if(引擎:取按键按下(键_鼠标右))then
			      当前武器="炸弹"
				准星=准星1
				当前精度=40
				当前攻击=0
				当前初始x=800
                        当前初始y=600
				当前音效=板砖音效
			end
	end
	
	
	
	
	
	-----------------------
	end
	
	
	
	
	
	
	
	---------------------重开系统
	if(主角体力<=1)and(游戏状态== "战斗")then
	      if(失败==0)then
	            受伤音效:播放()
			失败=1
		end
		失败动画:更新(时间)
		失败动画:显示_高级(0,0,0,16,12)
		if(失败动画:取当前帧()==4)then
	            游戏状态="失败"
			失败=0
		end
	end
	if(游戏状态=="失败")then
	      失败界面:显示(200,100)
		失败文字:显示(420,343,"你猜啊!")
		失败文字:显示(440,393,得分)
		
		if(引擎:取按键按下(键_回车))then
		
---------------游戏变量初始
-------墙
坚固=150
墙=1
一层背景:置图片(背景图片4)
主角体力=140
当前武器="板砖"
当前攻击=7
当前精度=20
准星=准星1
箭=10
子弹=10
当前初始x=800
当前初始y=600
当前音效=板砖音效
计数=0
得分=0
当前波数=0
掉落率=2
掉落物品=0
掉落参数=0
倒计时bj=1000 --补给
---------------控制变量
操作状态="空闲"
for n=1,12 do
      敌人点[n].状态=""
end
for n=1,table.getn(补给组) do
      table.remove(补给组,n)
	break
end
for n=1,table.getn(爆炸组) do
      table.remove(爆炸组,n)
	break
end
for n=1,table.getn(攻击组) do
      table.remove(攻击组,n)
	break
end
for n=1,table.getn(碎片组) do
      table.remove(碎片组,n)
	break
end
for n=1,table.getn(敌人碎片组) do
      table.remove(敌人碎片组,n)
	break
end
for n=1,table.getn(消失动画组) do
      table.remove(消失动画组,n)
	break
end
for n=1,table.getn(目标组) do
      table.remove(目标组,n)
	break
end
游戏状态="开始"

---------------完
		end
		
		
		
		
	end
	
	
	
	
	
	
	
	
	
	
	----------动态鼠标
	if(游戏状态=="开始")or(游戏状态=="帮助")then
            引擎:隐藏鼠标(false)
      else
            引擎:隐藏鼠标(true)
		准星:显示(鼠标x,鼠标y)
      end
	
	-----------------------得分信息
if(游戏状态=="战斗")then
	得分文字:置颜色(颜色_红)
	得分文字:显示(625,0,"得分:")
	得分数字:显示(得分,700,0,20,30,255,false)
end
	--------------------------
	
	end
	-----------暂停系统完--
	
	渲染结束()
	return false
end









--===============================================================================
-- ■ 网络数据处理()
--===============================================================================
function 网络数据处理 (命令,参数1,参数2,附加)


end




--=============================================================================--
-- ■ 网络连接断开()
--=============================================================================--
function 网络连接断开 ()


end



--===============================================================================
-- ■ 屏幕获得焦点()
--===============================================================================
function 屏幕获得焦点 ()


	return false
end



--===============================================================================
-- ■ 屏幕失去焦点()
--===============================================================================
function 屏幕失去焦点 ()

暂停="是"

	return false
end



--===============================================================================
-- ■ 屏幕关闭()
--===============================================================================
function 屏幕关闭 ()

	
	
	return true
end



--===============================================================================
-- ■ 渲染区保护()
--===============================================================================
function 渲染区保护 ()


	return false
end








